Shadowing of objects in a graphical image is important to provide valuable cues about the relationship between objects. For instance, the shadow of an object becomes much harder or sharper as the object contacts another object (e.g., the floor). Correspondingly, the shadow of the object becomes softer as the object moves away from other objects.
One of the fundamental problems in computer graphics is generating accurate soft shadows from area light sources in an efficient manner. More particularly, generating accurate soft shadows requires the generation of accurately depicted penumbras that transition away from the solid, dark area of the umbra. Conventional techniques are either too computationally expensive, or do not accurately depict the penumbra of the shadow, thereby limiting the use of these conventional techniques in developing graphical applications.
One standard technique is to determine all the rays of light from an area light source that would reach a particular point in image space. This results in an accurate description of the fraction of light from the light source that reaches the particular point. However, this method is computationally expensive, especially as the scene becomes more complex and screen resolution increases. As such, generation of shadows in real-time is severely limited.
Another conventional technique implements the use of hard shadows for every shadow that is generated. That is, the shadow effectively does not exhibit a penumbra, and thus is not capable of exhibiting soft shadowing effects. This technique however, is unable to distinguish when objects are closely located but not touching.
Still another conventional technique uniformly softens the shadow through uniform penumbras. However this technique, while visually more pleasing is unable to indicate when two objects are actually touching.
As such, conventional techniques for generating shadows are either computationally expensive, or are able to generate shadowing effects quickly but not accurately. Thus what is needed is the efficient generation of shadowing effects that is not computationally expensive but is still accurate.